var portName = "COM2"; //定义串口名1

const SerialPort = require("serialport");
console.log("SerialPort");

// (async () => {
//   try {
//       let ports = await SerialPort.list();
//       console.log(ports); // 打印串口列表
//   } catch (error) {
//       console.log(error);
//   }
// })();
let serialPort = new SerialPort( //设置串口属性
  "COM2",
  {
    baudRate: 9600, //波特率
    dataBits: 8, //数据位
    parity: "none", //奇偶校验
    stopBits: 1, //停止位
    flowControl: false,

    autoOpen: false, //不自动打开
  },
  false
);

serialPort.open(function (error) {
  if (error) {
    console.log("打开端口" + portName + "错误：" + error);
  } else {
    console.log("打开端口成功，正在监听数据中");

    let sourceString = "";
    serialPort.on("data", function (data) {
      //处理代码
      let str = data.toString();
      // sourceString += str;
      // console.log("接收串口数据data:", str);
      str = str.replace(";\n", "");
      console.log("接收串口数据data:", str);
      // if (str[str.length - 1] == ";") {
      //   sourceString = "";
      // }
    });
  }
});

// 错误提示：TypeError: SerialPort.list no longer takes a callback and only returns a promise

// list()弃用回调形式了，已经采用promise返回了，所以这里要用promise接收数据

let rel = SerialPort.list();

rel.then(
  (data) => {
    console.log("成功，串口列表为data:", data);
  },

  (error) => {
    console.log("失败err:", error);
  }
);
